function *itemArr(arr){
	if(Array.isArray(arr)){
		for (let s in arr) {
			yield* itemArr(arr[s]);//把返回的状态值 表达式执行权移交出去
		}
		// for(var i=0; i<arr.length; i++){
		// 	yield* itemArr(arr[i]); //把返回的状态值 表达式执行权移交出去
		// }
	}else{
		yield arr;
	}
}

// 使用 for-in 遍历:
let arr = ['a',['b', 'c'], ['d', 'e']];

// 递归实现+for in+闭包+Object.prototype.toString.call(arr) ==='[object Array]'
function arrDeepToSingle(arr){
	var temp = [];
	function _d2s(arr){
		for (var s in arr) { //不能用for of，因为不是可迭代的对象
			if(Object.prototype.toString.call(arr[s]) ==='[object Array]'){//是数组
 			    _d2s(arr[s]);
			}else{
				temp.push(arr[s]);
			}
		}
	};
	_d2s(arr);
	return temp;
}
// let singleArr = arrDeepToSingle(arr);
// console.log(singleArr);

var gen = itemArr(arr);
var resArr = [...gen];//解构执行gen所有
console.log(resArr);
console.log(666);